package com.database.common;

/**
 * 业务处理结果码
 * 
 * @author peitong.xue
 * @version 1.0
 * @since 1.0 2015年10月29日 下午3:02:39
 */
public enum BaseResultCodeEnum {
	/**操作成功**/
	ERR_CODE_200("200", "操作成功"),

    //00开头，表示系统级错误
    /**系统异常**/
    ERR_CODE_00000("00000", "系统异常"),
    /**系统执行异常**/
    ERR_CODE_00001("00001", "系统执行异常"),
    /**调用后台服务异常**/
    ERR_CODE_00002("00002", "调用后台服务异常"),
    
    //10开头，表示数据库错误
    /**数据库插入异常**/
    ERR_CODE_10000("10000", "数据库插入异常"),
    /**数据库更新异常**/
    ERR_CODE_10001("10001", "数据库更新异常"),
    /**数据库删除异常**/
    ERR_CODE_10002("10002", "数据库删除异常"),
    /**数据库查询异常**/
    ERR_CODE_10003("10003", "数据库查询异常"),
    
    //20开头，表示入参错误
    /**ID参数不合法**/
    ERR_CODE_20000("20000","ID参数不合法"),
    /**性别参数不合法**/
    ERR_CODE_20001("20001","性别参数不合法"),
    /**账号参数不合法**/
    ERR_CODE_20002("20002","账号参数不合法"),
    /**邮箱参数不合法**/
    ERR_CODE_20003("20003","邮箱参数不合法"),
    /**联系方式参数不合法**/
    ERR_CODE_20004("20004","联系方式参数不合法"),
    /**密码参数不合法**/
    ERR_CODE_20005("20005","密码参数不合法"),
    /**QQ参数不合法**/
    ERR_CODE_20006("20006","QQ参数不合法"),
    /**工作意向参数不合法**/
    ERR_CODE_20007("20007","工作意向参数不合法"),
    /**专业技能参数不合法**/
    ERR_CODE_20008("20008","专业技能参数不合法"),
    /**最高学位参数不合法**/
    ERR_CODE_20009("20009","最高学位参数不合法"),
    /**工作经验参数不合法**/
    ERR_CODE_20010("20010","工作经验参数不合法"),
    /**学习经历参数不合法**/
    ERR_CODE_20011("20011","学习经历参数不合法"),
    /**自我评价参数不合法**/
    ERR_CODE_20012("20012","自我评价参数不合法"),
    /**工作意向参数不合法**/
    ERR_CODE_20013("20013","工作意向参数不合法"),
    /**项目经费参数不合法**/
    ERR_CODE_20014("20014","项目经费参数不合法"),
    /**项目状态参数不合法**/
    ERR_CODE_20015("20015","项目状态参数不合法"),
    /**项目名称参数不合法**/
    ERR_CODE_20016("20016","项目名称参数不合法"),
    /**项目进程参数不合法**/
    ERR_CODE_20017("20017","项目进程参数不合法"),
    /**姓名参数不合法**/
    ERR_CODE_20018("20018","姓名参数不合法"),
    /**需求内容参数不合法**/
    ERR_CODE_20019("20019","需求内容参数不合法"),
    /**更改密码参数不合法**/
    ERR_CODE_20020("20020","更改密码参数不合法"),
    /**ID参数不合法**/
    ERR_CODE_20021("20021","ID参数不合法"),
    /**orderBy参数不合法**/
    ERR_CODE_20022("20022","orderBy参数不合法"),
    /**验证码参数不合法**/
    ERR_CODE_20023("20023","验证码参数不合法"),
    /**用户名或密码参数不合法**/
    ERR_CODE_20024("20024","用户名或密码参数不合法"),
    
    //30开头，表示业务错误
    /**账号或密码错误**/
    ERR_CODE_30000("30000", "账号或密码错误"),
    /**此账号已被人注册**/
    ERR_CODE_30001("30001","此账号已被人注册"),
    /**没有这个用户**/
    ERR_CODE_30002("30002","此用户不存在"),
    /**下单失败**/
    ERR_CODE_30003("30003","下单失败"),
    /**余额不足**/
    ERR_CODE_30004("30004","余额不足"),
    /**食品数量不足,下单失败**/
    ERR_CODE_30005("30005","食品数量不足,下单失败"),
    /**本店铺暂无菜式可选**/
    ERR_CODE_30006("30006","本店铺暂无菜式可选"),
    
    //40开头，表示返回结果错误
    /**数据不存在**/
    ERR_CODE_40000("40000", "数据不存在"),
    /**返回结果为空**/
    ERR_CODE_40001("40001", "返回结果为空"),

    //50表示逻辑处理错误
    /**数据转换异常**/
    ERR_CODE_50000("50000", "数据转换异常"),
    
    //90开头，表示其他错误**/
    /**其他错误**/
    ERR_CODE_90000("90000", "其他未知错误"),;
    
    /** 错误码 */
    private String code;

    /** 错误信息 */
    private String msg;

    BaseResultCodeEnum(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    /**
     * 根据code获取对应的枚举。
     *
     * @param code 枚举值
     * @return code值对应的枚举
     */
    public static BaseResultCodeEnum getEnumByCode(String code) {

        //value为空，返回null
        if (code == null || code == "") {
            return BaseResultCodeEnum.ERR_CODE_40001;
        }

        //遍历
        for (BaseResultCodeEnum errEnum : values()) {
            if (code.equals(errEnum.getCode())) {
                return errEnum;
            }
        }
        //找不到匹配的，返回null
        return BaseResultCodeEnum.ERR_CODE_90000;
    }

    public String getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

}
